package jianzhioffer;

/**
 * Author: Zhang Dongwei
 * Date: 2023/3/28 10:16
 * 求 1+2+...+n ，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A?B:C）。
 */
public class offer_64_求1_n之和 {

    public static void main(String[] args) {
        System.out.println(sumNums(9));
    }

//    循环，不符合题意
    public static int sumNums1(int n) {
        int res = 0;
        for (int i=1; i<=n; i++){
            res += i;
        }
        return res;
    }

//    公式法,使用了乘除，不合题意
    public static int sumNums2(int n) {
        return (1+n)*n/2;
    }

//    利用短路操作
    public static int sumNums(int n) {
        boolean x = n>1 && (n += sumNums(n-1)) == 1;
        return n;
    }
}
